package service

import (
	"gitee.com/ysl729895/go-mall/internal/model"
	"gitee.com/ysl729895/go-mall/internal/repository"
)

// CategoryService 定义分类业务逻辑接口
type CategoryService interface {
	CreateCategory(name string) (*model.Category, error) // 创建分类（业务逻辑）
	GetCategories() ([]model.Category, error)            // 获取分类列表（业务逻辑）
}

// categoryService 实现 CategoryService 接口
type categoryService struct {
	repo repository.CategoryRepository // 依赖仓库层接口（通过依赖注入）
}

// NewCategoryService 构造函数：创建分类服务实例
// 参数 repo: 分类仓库实例
// 返回值: 实现 CategoryService 接口的实例
func NewCategoryService(repo repository.CategoryRepository) CategoryService {
	return &categoryService{repo: repo}
}

// CreateCategory 实现分类创建业务逻辑
// 参数 name: 分类名称
// 返回值: 创建的分类对象及错误信息
func (s *categoryService) CreateCategory(name string) (*model.Category, error) {
	// 创建模型实例
	category := &model.Category{
		Name: name,
	}
	// 调用仓库层方法插入数据
	err := s.repo.Create(category)
	return category, err
}

// GetCategories 实现获取分类列表业务逻辑
// 返回值: 分类列表及错误信息
func (s *categoryService) GetCategories() ([]model.Category, error) {
	// 直接调用仓库层方法获取数据
	return s.repo.GetAll()
}
